package Intermediate_algorithm.Other;

import org.junit.Test;

/*
两整数之和
给你两个整数 a 和 b ，不使用 运算符+ 和-，计算并返回两整数之和。

示例 1：
输入：a = 1, b = 2
输出：3
示例 2：
输入：a = 2, b = 3
输出：5

提示：
-1000 <= a, b <= 1000

作者：LeetCode
链接：https://leetcode.cn/leetbook/read/top-interview-questions-medium/xwaiag/
 */
public class _01两整数之和 {

    @Test
    public void test() {
        System.out.println(getSum(2, 3));
    }

    //位运算
    public int getSum(int a, int b) {
        while (b != 0) {
            //获得所有进位 eg: 100
            int carry = (a & b) << 1;
            //获得所有异位 eg: 001
            //第二次是合并 eg: 101 = 5
            a = a ^ b;
            b = carry ;
        }
        return a;
    }

}
